<?php

//Obtenemos todas la alertas ordenada por fecha de publicacion
//Obtiene todas las alertas Publicadas(estado=1) con idioma y si no existe el idioma selecciona otro 
//PRUEBAS: BÁSICAS(OK)
function getEventos() {
	/*
	[
	 { id:1, start_date:"2014-07-15 00:00:00", end_date:"2014-07-16 00:00:00", text:"French Open", details:"Philippe-Chatrier Court Paris, FRA" },
	 { id:2, start_date:"2014-07-15 00:00:00", end_date:"2014-07-16 12:00:00", text:"Aegon Championship", details:"The Queens Club London, ENG" },
	 { id:3, start_date:"2014-07-22 00:00:00", end_date:"2014-07-22 12:00:00", text:"Aegon", details:"The Queens Club London, ENG" }
	]
	*/

	$idioma = getIdioma();
	$estado = getEstado();

	$sql_traduccion = "(SELECT * FROM " . TABLA_EVENTO . " ev1, " . TABLA_EVENTO_LOCALE . " ev1loc WHERE ev1.id = ev1loc.id_evento and ev1.estado = :estado and ev1loc.id_idioma = :idioma and ev1.fecha_inicio >= DATE(NOW()))";
	$sql_sin_traduccion = "(SELECT * FROM " . TABLA_EVENTO . " ev2, " . TABLA_EVENTO_LOCALE . " ev2loc WHERE ev2.id = ev2loc.id_evento and ev2.estado = :estado and ev2.fecha_inicio >= DATE(NOW()) and NOT EXISTS (SELECT * FROM " . TABLA_EVENTO . " ev_sub, " . TABLA_EVENTO_LOCALE . " evloc_sub WHERE ev2.id = ev2loc.id_evento and ev2.id = ev_sub.id and ev2.id = evloc_sub.id_evento and evloc_sub.id_idioma = :idioma) GROUP BY(ev2.id))";

	$sql = $sql_traduccion . " UNION " . $sql_sin_traduccion . " ORDER BY fecha_publicacion DESC LIMIT 50";
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);
		$stmt->bindParam("idioma", $idioma);
		$stmt->bindParam("estado", $estado);
		$stmt->execute();
		$eventos = $stmt->fetchAll(PDO::FETCH_OBJ);
		$db = null;
		$eventos_formato_agenda = eventosFormatoAgenda($eventos);
		echo $_GET['callback']."(".json_encode($eventos_formato_agenda).");";
		//echo json_encode($eventos);
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}


//Obtenemos una Evento en concreto con su id
//TODO: De momento no se va a usar, y no le pasamos estado y el idioma que se le pasa
//ya que previamente se ha debido de obtener en la app
function getEvento($id) {
	$idioma = getIdioma();
	
	$sql = "SELECT * FROM " . TABLA_EVENTO . " ev, " . TABLA_EVENTO_LOCALE . " ev_loc WHERE ev.id = ev_loc.id_evento and ev_loc.id_idioma =:idioma and ev.id=:id";
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);  
		$stmt->bindParam("id", $id);
		$stmt->bindParam("idioma", $idioma);
		$stmt->execute();
		$evento = $stmt->fetchObject();  
		$db = null;
		echo $_GET['callback']."(".json_encode(eventoFormato($evento,true)).");";
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}'; 
	}
}


function eventosFormatoAgenda($eventos){
	$eventos_formato = array();
	foreach ($eventos as $key => $evento) {
		# code...
		array_push($eventos_formato, eventoFormato($evento, false));
	}

	return $eventos_formato;
}

/**
*	Si completo es true se añade informacion extra para la agenda
*/
function eventoFormato($evento, $completo){
	$evento_formato = new stdClass;
	$evento_formato->id = $evento->id;
	$evento_formato->id_categoria = $evento->id_categoria;
	$evento_formato->start_date = $evento->fecha_inicio;

	$evento_formato->end_date = $evento->fecha_fin;

	$evento_formato->text = $evento->titulo;
	
	//TODO: juntar otros campos
	$evento_formato->details = $evento->descripcion;

	if($completo == true){
		$evento_formato->latitud = $evento->latitud;
		$evento_formato->longitud = $evento->longitud;		
	}
	
	return $evento_formato;
}

//Obtenemos todas la alertas ordenada por fecha de publicacion
//Segun las categorias seleccionadas
//Obtiene todas las alertas Publicadas(estado=1) con idioma y si no existe el idioma selecciona otro
//PRUEBAS: BÁSICAS(OK)
/*function getAlertasCategorias() {
	$idioma = getIdioma();
	$estado = getEstado();

	//categorias separadas por comas
	$categorias = $_GET['categorias'];
	$categorias = "(" . $categorias . ")";

	$sql_traduccion = "(SELECT * FROM Alerta ev1, Alerta_Locale a1loc WHERE ev1.id = ev1loc.id_alerta and ev1.estado = :estado and ev1loc.id_idioma = :idioma and ev1.id_categoria IN " . $categorias . ")";
	$sql_sin_traduccion = "(SELECT * FROM Alerta a2, Alerta_Locale a2loc WHERE a2.id = a2loc.id_alerta and a2.estado = :estado and a2.id_categoria IN " . $categorias . " and NOT EXISTS (SELECT * FROM Alerta a_sub, Alerta_Locale al_sub WHERE a2.id = a2loc.id_alerta and a2.id = a_sub.id and a2.id = al_sub.id_alerta and al_sub.id_idioma = :idioma) GROUP BY(a2.id))";

	$sql = $sql_traduccion . " UNION " . $sql_sin_traduccion . " ORDER BY fecha_publicacion DESC LIMIT 50";
	
	try {
		$db = getConnection();
		$stmt = $db->prepare($sql);
		$stmt->bindParam("idioma", $idioma);
		$stmt->bindParam("estado", $estado);
		$stmt->execute();
		$alertas = $stmt->fetchAll(PDO::FETCH_OBJ);
		$db = null;
		echo $_GET['callback']."(".json_encode($alertas).");";
		//echo '{"alertas": ' . json_encode($alertas) . '}';
	} catch(PDOException $e) {
		echo '{"error":{"text":'. $e->getMessage() .'}}';
	}
}*/

?>